package com.pajk.user.dal.mapper;

import com.pajk.user.dal.model.AccountChannelDO;
import com.pajk.user.model.enums.ChannelType;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * @Author Haomin Liu
 */
public interface AccountChannelMapper {

    /**
     * 通过OpenId ＋ ChannelType 查询AccountChannel
     *
     * TODO：这个操作之后会迁移到Tair上，不使用数据库查询（因为其查询方向和分库分表规则冲突）
     *
     * @param openId 用户某个渠道上的用户识别ID
     * @param channelType 渠道定义
     * @return AccountChannelDO实例
     */
    AccountChannelDO getAccountChannelByOpenId(@Param("openId") String openId, @Param("channelType") ChannelType channelType);

    /**
     * 根据UserId查询有多少账号信息
     *
     * @param userId 用户ID
     * @return AccountChannelDO实例列表
     */
    List<AccountChannelDO> getAccountChannelByUserId(@Param("userId")Long userId);

    /**
     * 删除某UserId下所属的所有的渠道映射
     *
     * @param userId 用户ID
     */
    void deleteAccountChannelByUserId(@Param("userId")Long userId);

    /**
     * 增加AccountChannel记录
     *
     * @param
     */
    void insertAccountChannel(AccountChannelDO accountChannelDo);

    /**
     * 将from的account关联关系转入到to
     *
     * @param from 需要将account关联转出的userID
     * @param to 需要将account关联转入的userID
     */
    void batchUpdateAccountUserIdByUserId(@Param("from")Long from, @Param("to")Long to);
}